<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>tomcat配置文件server.xml详解 | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>tomcat配置文件server.xml详解</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Tomcat/">Tomcat</a>
			</span>
		
	</div>

	

	
		<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/tomcat%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6server.xml%E8%AF%A6%E8%A7%A3/01.png?raw=true" alt=""></figure></p>
<h2 id="元素"><a href="#元素" class="headerlink" title="元素"></a><server>元素</server></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<service>元素.并且它不能做为任何元素的子元素.</service></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt; Server port =<span class="string">"8005"</span> shutdown =<span class="string">"SHUTDOWN"</span> debug =<span class="string">"0"</span> &gt;</div></pre></td></tr></table></figure>
<ul>
<li>className指定实现org.apache.catalina.Server接口的类.默认值为<br>org.apache.catalina.core.StandardServer</li>
<li>port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.</li>
<li>shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置</li>
</ul>
<h2 id="元素-1"><a href="#元素-1" class="headerlink" title="元素"></a><service>元素</service></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;该元素由org.apache.catalina.Service接口定义,它包含一个<engine>元素,以及一个或多个<connector>,这些Connector元素共享用同一个Engine元素</connector></engine></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">&lt; Service name =<span class="string">"Catalina"</span> &gt; </div><div class="line">    &lt; Service name =<span class="string">"Apache"</span> &gt;</div></pre></td></tr></table></figure>
<ul>
<li>第一个<service>处理所有直接由Tomcat服务器接收的web客户请求.</service></li>
<li>第二个<service>处理所有由Apahce服务器转发过来的Web客户请求<ul>
<li>className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService</li>
<li>name定义Service的名字</li>
</ul>
</service></li>
</ul>
<h2 id="元素-2"><a href="#元素-2" class="headerlink" title="元素"></a><engine>元素</engine></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每个Service元素只能有一个Engine元素.元素处理在同一个<service>中所有<connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.</connector></service></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt; Engine name =<span class="string">"Catalina"</span> defaultHost =<span class="string">"localhost"</span> debug =<span class="string">"0"</span> &gt;</div></pre></td></tr></table></figure>
<ul>
<li>className指定实现Engine接口的类,默认值为StandardEngine</li>
<li>defaultHost指定处理客户的默认主机名,在<engine>中的<host>子元素中必须定义这一主机</host></engine></li>
<li>name定义Engine的名字在</li>
<li>在<engine>可以包含如下元素<logger>, <realm>, <value>, <host></host></value></realm></logger></engine></li>
</ul>
<h2 id="元素-3"><a href="#元素-3" class="headerlink" title="元素"></a><host>元素</host></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;它由Host接口定义.一个Engine元素可以包含多个<host>元素.每个<host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.</host></host></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt; Host name =<span class="string">"localhost"</span> debug =<span class="string">"0"</span> appBase =<span class="string">"webapps"</span> unpackWARs =<span class="string">"true"</span> autoDeploy =<span class="string">"true"</span> &gt;</div></pre></td></tr></table></figure>
<ul>
<li>className指定实现Host接口的类.默认值为StandardHost</li>
<li>appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<catalina_home>的相对目录.如果没有此项,默认为<catalina_home>/webapps</catalina_home></catalina_home></li>
<li>autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用</li>
<li>unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件</li>
<li>alias指定主机别名,可以指定多个别名</li>
<li>deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<context>元素,将采用Tomcat默认的Context</context></li>
<li>name定义虚拟主机的名字</li>
<li>在<host>元素中可以包含如下子元素:<logger>, <realm>, <value>, <context></context></value></realm></logger></host></li>
</ul>
<h2 id="元素-4"><a href="#元素-4" class="headerlink" title="元素"></a><context>元素</context></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;它由Context接口定义.是使用最频繁的元素.每个&lt;Context元素代表了运行在虚拟主机上的单个Web应用.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;一个<host>可以包含多个<context>元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个ServletContext对象.</context></host></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&lt; Context path =<span class="string">"/sample"</span> docBase =<span class="string">"sample"</span> debug =<span class="string">"0"</span> reloadbale =<span class="string">"true"</span> &gt;</div></pre></td></tr></table></figure>
<ul>
<li>className指定实现Context的类,默认为StandardContext类</li>
<li>path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事</li>
<li>reloadable如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用</li>
<li>cookies指定是否通过Cookies来支持Session,默认值为true</li>
<li>useNaming指定是否支持JNDI,默认值为了true</li>
<li>在<context>元素中可以包含如下元素<br><logger>, <realm>, <resource>, <resourceparams></resourceparams></resource></realm></logger></context></li>
</ul>
<h2 id="元素-5"><a href="#元素-5" class="headerlink" title="元素"></a><connector>元素</connector></h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;由Connector接口定义.<connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.</connector></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">&lt; Connector port =<span class="string">"8080"</span> maxThread =<span class="string">"50"</span> minSpareThreads =<span class="string">"25"</span> maxSpareThread =<span class="string">"75"</span> </div><div class="line">enableLookups =<span class="string">"false"</span> redirectPort =<span class="string">"8443"</span> acceptCount =<span class="string">"100"</span> debug =<span class="string">"0"</span> </div><div class="line">connectionTimeout =<span class="string">"20000"</span> disableUploadTimeout =<span class="string">"true"</span> /&gt; </div><div class="line">&lt; Connection port =<span class="string">"8009"</span> enableLookups =<span class="string">"false"</span> redirectPort =<span class="string">"8443"</span> debug =<span class="string">"0"</span> </div><div class="line">protocol =<span class="string">"AJP/1.3"</span> /&gt;</div></pre></td></tr></table></figure>
<ul>
<li>第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;</li>
<li>第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.</li>
<li>Connector元素共用属性<ul>
<li>className指定实现Connector接口的类</li>
<li>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true</li>
<li>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口</li>
</ul>
</li>
<li>HttpConnector元素的属性<ul>
<li>className实现Connector的类</li>
<li>port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入<a href="http://localhost" target="_blank" rel="external">http://localhost</a> 即可,因为TCP/IP的默认端口是80</li>
<li>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址</li>
<li>bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte</li>
<li>protocol设定Http协议,默认值为HTTP/1.1</li>
<li>maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200</li>
<li>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.</li>
<li>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间</li>
</ul>
</li>
<li>JkConnector的属性<ul>
<li>className实现Connector的类</li>
<li>port设定AJP端口号</li>
<li>protocol必须设定为AJP/1.3</li>
</ul>
</li>
</ul>

	

	
		<span class="different-posts"><a href="/2017/10/12/Tomcat/6.  tomcat配置文件server.xml详解/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
